#include <stdio.h>
#include <stdlib.h>

// 设计算法在二叉排序树中查找第k大的结点

typedef struct BNode{
    BNode *lchild;
    BNode *rchild;
    int data;
}BNode,*BTree;


int num = 0; // 记录遍历了几个结点

// 找到第四个中序遍历访问的结点
void inorder(BTree T, int k){
    if(!T)
        return;
    inorder(T->lchild, k);
    // 第k个中序遍历访问的结点
    num++;
    if (k == num)
        printf("%d", T->data);
    inorder(T->rchild, k);
}


BNode *GetNode(int x)
{
    BNode *node = (BNode *)malloc(sizeof(BNode));
    node->data = x;
    node->lchild = NULL;
    node->rchild = NULL;
}


// inorder(T->lchild)
// visit(T->data)
// inorder(T->rchild)

/***
 *          3
 *      2       5
 *   1        4    6
 * */
int main()
{
    BTree T = GetNode(3);
    T->lchild = GetNode(2);
    T->rchild = GetNode(5);
    T->lchild->lchild = GetNode(1);
    T->rchild->rchild = GetNode(6);
    T->rchild->lchild = GetNode(4);

    inorder(T, 4);

    return 0;
}